//
// Created by denglibin on 2019/7/10 0010.
//
/**多项式求解**/

/***
 * y = a(n)x^n + a(n-1)x^(n-1) + ... + a(1)x + a(0)
 * 等价于
 * y = (...(a(n)x+a(n-1)+a(n-2))x +...+ a(1))x + a(0) (不断的提公因式x)
 * 例如：
 * y = 5x^5 + 4x^4 + 3x^3 + 2x^2 + x + 3  （共6项 0-5）
 *   = (5x^4 + 4x^3 + 3x^2 + 2x + 1)x + 3
 *   =((5x^3 + 4x^2 + 3x + 2)x + 1)x + 3
 *   =(((5x^2 + 4x + 3)x + 2)x + 1)x + 3
 *   =((((5x + 4)x + 3)x + 2)x + 1)x + 3
 **/

#include <stdio.h>
/**
 *
 * @param a 数组 各项的系数
 * @param n 多少项
 * @param x x的值
 * @return
 */
static double multinomial(double a[], int n, double x){
    double result = a[n-1];
    for(int i = n - 2; i >= 0; i--){
        result = result * x + a[i];
    }
    return result;
}

int main5(){

    double arr[2] = {1, 2};
    double x = 2;
    double result = multinomial(arr, 2, x);
    printf("%f\n", result);
    return 0;
}
